{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Analyzing United States tornadoes"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "toc": true
   },
   "source": [
    "<h1>Table of Contents<span class=\"tocSkip\"></span></h1>\n",
    "<div class=\"toc\"><ul class=\"toc-item\"><li><span><a href=\"#Connect-your-GIS\" data-toc-modified-id=\"Connect-your-GIS-1\">Connect your GIS</a></span></li><li><span><a href=\"#Who-has-suffered-the-most?\" data-toc-modified-id=\"Who-has-suffered-the-most?-2\">Who has suffered the most?</a></span></li><li><span><a href=\"#Visualize-which-states-have-had-the-most-tornadoes.\" data-toc-modified-id=\"Visualize-which-states-have-had-the-most-tornadoes.-3\">Visualize which states have had the most tornadoes.</a></span></li><li><span><a href=\"#Conclusion\" data-toc-modified-id=\"Conclusion-4\">Conclusion</a></span></li></ul></div>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Tornadoes occur in many parts of the world, including Australia, Europe, Africa, Asia, and South America, but they are found most frequently in the United States. Outside the United States, two of the highest concentrations of tornadoes are found in Argentina and Bangladesh.\n",
    "\n",
    "Tornadoes are the most violent of all atmospheric storms and in the United States alone have caused an average of more than 80 deaths and 1,400 injuries each year (based on 1950–2011 data). A tornado is a narrow, violently rotating column of air that extends from the base of a thunderstorm to the ground. Tornado formation is complex, and no two tornadoes are the same; however, they need certain conditions to form, including intense or unseasonable heat. Wind speed within a tornado can vary from just above 0 mph up to 70 mph, with an average of 30 mph (NOAA). The Fujita damage scale is used to quantify the intensity of a tornado."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<img src=\"\">"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Explore the map of tornadoes across the United States: Twister! United States tornadoes from 1950 to 2012. Which states have had the most tornadoes? Using tornado location data from the United States severe weather report database, provided by the National Oceanic and Atmospheric Administration (NOAA)/National Weather Service Storm Prediction Center (http://www.spc.noaa.gov/gis/svrgis/), you can find the total number of tornadoes by state."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Connect your GIS"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from arcgis.gis import GIS"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To create the GIS object, we pass in the url and our login credentials as shown below"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "gis = GIS(profile='your_online_profile')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "`Search`\n",
    "for the title: **tornado_lyr** layer.You can search the GIS for feature layer collections by specifying the item type as 'Feature Layer Collection' or 'Feature Layer'. You can also mention the owner name of the layer to get better search results."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "data = gis.content.search('Tornadoes_and_Tracks owner: api_data_owner',\n",
    "                          'Feature layer', outside_org=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Display the list of results."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div class=\"item_container\" style=\"height: auto; overflow: hidden; border: 1px solid #cfcfcf; border-radius: 2px; background: #f6fafa; line-height: 1.21429em; padding: 10px;\">\n",
       "                    <div class=\"item_left\" style=\"width: 210px; float: left;\">\n",
       "                       <a href='https://geosaurus.maps.arcgis.com/home/item.html?id=5c210f1e7ad04c1bbaf991beb13ee905' target='_blank'>\n",
       "                        <img src='' width='200' height='133' class=\"itemThumbnail\">\n",
       "                       </a>\n",
       "                    </div>\n",
       "\n",
       "                    <div class=\"item_right\"     style=\"float: none; width: auto; overflow: hidden;\">\n",
       "                        <a href='https://geosaurus.maps.arcgis.com/home/item.html?id=5c210f1e7ad04c1bbaf991beb13ee905' target='_blank'><b>Tornadoes_and_Tracks</b>\n",
       "                        </a>\n",
       "                        <br/><br/><img src='https://geosaurus.maps.arcgis.com/home/js/jsapi/esri/css/images/item_type_icons/featureshosted16.png' style=\"vertical-align:middle;\" width=16 height=16>Feature Layer Collection by api_data_owner\n",
       "                        <br/>Last Modified: April 13, 2020\n",
       "                        <br/>0 comments, 63 views\n",
       "                    </div>\n",
       "                </div>\n",
       "                "
      ],
      "text/plain": [
       "<Item title:\"Tornadoes_and_Tracks\" type:Feature Layer Collection owner:api_data_owner>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from IPython.display import display\n",
    "\n",
    "for item in data:\n",
    "    display(item)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Get the first item from the results."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "item = data[0] #tornado_lyr "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The code below cycles through the layers and print their names."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Tornadoes_5011\n",
      "Kansas_tracks\n",
      "MeanTrack_Merge\n",
      "Kansas_counties10\n",
      "StatePop_5011\n"
     ]
    }
   ],
   "source": [
    "for lyr in item.layers:\n",
    "    print(lyr.properties.name)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Since the item is a Feature Layer Collection, accessing the layers property gives us a list of FeatureLayer objects. The StatePop_5011 layer is in the last index position for the list of layers and tornadoes is in the first."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "#StatePop_5011\n",
    "boundary = item.layers[4]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Tornadoes_5011\n",
    "tornado_lyr = item.layers[0]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "`Aggregate_points` tool summarizes data from spot measurements by area. To learn more about this tool and the formula it uses, refer to the documentation <a href=\"http://doc.arcgis.com/en/arcgis-online/analyze/aggregate-points.htm\">here</a>."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "from arcgis.features.summarize_data import aggregate_points\n",
    "from datetime import datetime as dt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Please change the output_name if this is not the first you run the cell below."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "agg_points = aggregate_points(point_layer=tornado_lyr, \n",
    "                              polygon_layer=boundary, \n",
    "                              keep_boundaries_with_no_points=True,\n",
    "                              output_name=\"agg_tornado_points\" + str(dt.now().microsecond))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div class=\"item_container\" style=\"height: auto; overflow: hidden; border: 1px solid #cfcfcf; border-radius: 2px; background: #f6fafa; line-height: 1.21429em; padding: 10px;\">\n",
       "                    <div class=\"item_left\" style=\"width: 210px; float: left;\">\n",
       "                       <a href='https://geosaurus.maps.arcgis.com/home/item.html?id=735a1453f2e3493382e9be0bf56c76a6' target='_blank'>\n",
       "                        <img src='http://static.arcgis.com/images/desktopapp.png' class=\"itemThumbnail\">\n",
       "                       </a>\n",
       "                    </div>\n",
       "\n",
       "                    <div class=\"item_right\"     style=\"float: none; width: auto; overflow: hidden;\">\n",
       "                        <a href='https://geosaurus.maps.arcgis.com/home/item.html?id=735a1453f2e3493382e9be0bf56c76a6' target='_blank'><b>agg_tornado_points198929</b>\n",
       "                        </a>\n",
       "                        <br/><br/><img src='https://geosaurus.maps.arcgis.com/home/js/jsapi/esri/css/images/item_type_icons/featureshosted16.png' style=\"vertical-align:middle;\" width=16 height=16>Feature Layer Collection by naubry_geosaurus\n",
       "                        <br/>Last Modified: August 22, 2024\n",
       "                        <br/>0 comments, 0 views\n",
       "                    </div>\n",
       "                </div>\n",
       "                "
      ],
      "text/plain": [
       "<Item title:\"agg_tornado_points198929\" type:Feature Layer Collection owner:naubry_geosaurus>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "agg_points"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "agg_lyr = agg_points.layers[0]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The GIS object includes a map widget for displaying geographic locations, visualizing GIS content, as well as the results of your analysis. To use the map widget, call ``gis.map()`` and assign it to a variable."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "m1 = gis.map('US')\n",
    "m1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![Screenshot]()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "m1.zoom = 4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "m1.content.add(agg_lyr)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Who has suffered the most?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "There can be many devastating effects from a tornado, including loss of life, injuries, property damage, and financial losses. To identify populations that have been affected by tornadoes, you can aggregate the number of tornadoes to the state level and normalize by population."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "m2 = gis.map('Midwest')\n",
    "m2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![Screenshot]()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "m2.content.add(agg_lyr, options={\"opacity\":0.7})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "rm_layer = m2.content.renderer(0)\n",
    "rm_layer.smart_mapping().class_breaks_renderer(break_type=\"color\", field=\"AvgPop\", num_classes=10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "m2.legend.enabled = True"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Feature layers hosted can be easily read into a Spatially Enabled DataFrame using the from_layer method. Once you read it into a SEDF object, you can create reports, manipulate the data, or convert it to a form that is comfortable and makes sense for its intended purpose."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "sdf = pd.DataFrame.spatial.from_layer(agg_lyr)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>OBJECTID</th>\n",
       "      <th>STATE</th>\n",
       "      <th>NAME</th>\n",
       "      <th>Average</th>\n",
       "      <th>AvgPop</th>\n",
       "      <th>Point_Count</th>\n",
       "      <th>AnalysisArea</th>\n",
       "      <th>SHAPE</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>11</td>\n",
       "      <td>District of Columbia</td>\n",
       "      <td>673920.5161</td>\n",
       "      <td>673921.0</td>\n",
       "      <td>2</td>\n",
       "      <td>68.337318</td>\n",
       "      <td>{\"rings\": [[[-8575619.3133, 4720462.3076], [-8...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>10</td>\n",
       "      <td>Delaware</td>\n",
       "      <td>609949.2258</td>\n",
       "      <td>609949.0</td>\n",
       "      <td>56</td>\n",
       "      <td>2025.151926</td>\n",
       "      <td>{\"rings\": [[[-8402132.4511, 4824614.7585], [-8...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>44</td>\n",
       "      <td>Rhode Island</td>\n",
       "      <td>955012.3871</td>\n",
       "      <td>955012.0</td>\n",
       "      <td>9</td>\n",
       "      <td>1104.035392</td>\n",
       "      <td>{\"rings\": [[[-7946174.496, 5146505.0916], [-79...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>09</td>\n",
       "      <td>Connecticut</td>\n",
       "      <td>3027382.71</td>\n",
       "      <td>3027380.0</td>\n",
       "      <td>89</td>\n",
       "      <td>4986.287282</td>\n",
       "      <td>{\"rings\": [[[-8132251.0361, 5166952.3], [-8127...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>34</td>\n",
       "      <td>New Jersey</td>\n",
       "      <td>7269192.065</td>\n",
       "      <td>7269190.0</td>\n",
       "      <td>137</td>\n",
       "      <td>7780.021177</td>\n",
       "      <td>{\"rings\": [[[-8263743.7337, 5033439.7722], [-8...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   OBJECTID STATE                  NAME      Average     AvgPop  Point_Count  \\\n",
       "0         1    11  District of Columbia  673920.5161   673921.0            2   \n",
       "1         2    10              Delaware  609949.2258   609949.0           56   \n",
       "2         3    44          Rhode Island  955012.3871   955012.0            9   \n",
       "3         4    09           Connecticut   3027382.71  3027380.0           89   \n",
       "4         5    34            New Jersey  7269192.065  7269190.0          137   \n",
       "\n",
       "   AnalysisArea                                              SHAPE  \n",
       "0     68.337318  {\"rings\": [[[-8575619.3133, 4720462.3076], [-8...  \n",
       "1   2025.151926  {\"rings\": [[[-8402132.4511, 4824614.7585], [-8...  \n",
       "2   1104.035392  {\"rings\": [[[-7946174.496, 5146505.0916], [-79...  \n",
       "3   4986.287282  {\"rings\": [[[-8132251.0361, 5166952.3], [-8127...  \n",
       "4   7780.021177  {\"rings\": [[[-8263743.7337, 5033439.7722], [-8...  "
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sdf.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(51, 8)"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sdf.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Visualize which states have had the most tornadoes."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "sdf.sort_values(by='Point_Count', ascending=False, axis=0, inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "df = sdf[0:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1gAAAKPCAYAAABw02uLAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAACB30lEQVR4nOzdeZxO9f//8ecYZqwzg5ghOxUjS5aYkDAZUlGyFFmSNlTW+JDQIlT2JSUjUpZKIsbYxYSUiEhl14x1ZuzLzOv3R78537lsoWMuzON+u103c53zvs55neNc57qe1znnfXzMzAQAAAAA+M8yeLsAAAAAALhVELAAAAAAwCUELAAAAABwCQELAAAAAFxCwAIAAAAAlxCwAAAAAMAlBCwAAAAAcAkBCwAAAABcQsACAAAAAJcQsIB0YOnSpfLx8dHMmTO9XQq8pEiRImrTps0Vt3344Yddr6FNmzbKnj2769P9L/Px8fFRv379rmk+Pj4+6tix4zW9Nj3r16+ffHx8dPDgQW+XckXWrl2r++67T9myZZOPj4/Wr1/v7ZKuq5T/HwDXjoAF3KR8fHyu6LF06dI0q2nfvn3q16/fDf8F5J133tGsWbOu+fWbN29Wv379tGPHDtdqSmvXaxlOnDihfv36pel2l56sWrVK/fr1U3x8vLdLSRfOnj2rJk2a6PDhwxo6dKgmT56swoULX7TtrbBfAOCOjN4uAMC1mTx5ssfzTz/9VNHR0RcML1WqlH777bc0qWnfvn3q37+/ihQpovLly6fJPK/FO++8oyeeeEKNGjW6ptdv3rxZ/fv31wMPPKAiRYq4Wtv1snXrVmXI8H+/qV2vZThx4oT69+8vSXrggQdcm+71cvLkSWXMePN8FK5atUr9+/dXmzZtFBQU5O1ybnl//vmndu7cqY8++kjPPvvsZdvejPsFANfHzfOpAsBDy5YtPZ7/8MMPio6OvmC4pDQLWLhx+fv7e7uEG1LmzJm9XQKukxMnTihr1qz/aRr79++XJK+GWTeWA0Da4hRBIB1JTk7W22+/rQIFCihz5syqU6eO/vjjjwvarV69WvXq1VNgYKCyZs2qmjVrauXKlZed9tKlS1W5cmVJUtu2bZ1TFCMjI69quinn///xxx/Or/SBgYFq27atTpw48a/LuG3bNjVu3FghISHKnDmzChQooObNmyshIUHSP6dWHj9+XJMmTXJqTLk2aefOnXrppZd01113KUuWLMqdO7eaNGniccpPZGSkmjRpIkmqVavWRU/FnDdvnmrUqKFs2bIpR44catCggTZt2uRRZ2xsrNq2basCBQrI399f+fLlU8OGDS97etHs2bPl4+OjDRs2OMO+/PJL+fj46PHHH/doW6pUKTVr1sx5nvoarCtZBkn6/vvvde+99ypz5swqVqyYPv3000vWJkk7duxQnjx5JEn9+/d3pnv+NU579+5Vo0aNlD17duXJk0fdunVTUlKSR5vk5GQNGzZMpUuXVubMmRUcHKznn39eR44cuWwNVzufi9W3dOlSVapUSZkzZ1bx4sX14YcfXva6lFmzZunuu++Wv7+/Spcurfnz51+0lmeeeUbBwcFOu08++eSCdiNHjlTp0qWVNWtW5cyZU5UqVdLUqVMl/fPe6N69uySpaNGizvq93DbzwAMP6O6779bmzZtVq1YtZc2aVbfffrsGDx7s0S4yMvKi00q5fjP1tpEyzQ0bNqhmzZrKmjWrSpQo4VzjuWzZMlWpUkVZsmTRXXfdpYULF160toMHD6pp06YKCAhQ7ty59corr+jUqVMXtJsyZYoqVqyoLFmyKFeuXGrevLl279590eVct26d7r//fmXNmlX/+9//LrleJGnx4sXO+zQoKEgNGzb0+DGqTZs2qlmzpiSpSZMm8vHxueRR2St5T40ZM0alS5eWv7+/8ufPrw4dOlxwquellmPHjh3y8fHRe++9p/Hjx6t48eLy9/dX5cqVtXbtWo9pbNiwQW3atFGxYsWUOXNmhYSE6JlnntGhQ4cuqPv7779X5cqVPbb1izl37pzefPNNZ75FihTR//73P50+ffqCttdr/wfcVAzALaFDhw52qbf0kiVLTJLdc889VrFiRRs6dKj169fPsmbNavfee69H20WLFpmfn5+FhYXZ+++/b0OHDrWyZcuan5+frV69+pLzj42NtQEDBpgke+6552zy5Mk2efJk+/PPP69qum+88YZT6+OPP25jxoyxZ5991iRZjx49LrsOTp8+bUWLFrX8+fPbW2+9ZR9//LH179/fKleubDt27DAzs8mTJ5u/v7/VqFHDqXHVqlVmZjZjxgwrV66c9e3b18aPH2//+9//LGfOnFa4cGE7fvy4mZn9+eef9vLLL5sk+9///udMIzY21szMPv30U/Px8bF69erZyJEjbdCgQVakSBELCgqy7du3O7Xed999FhgYaH369LGPP/7Y3nnnHatVq5YtW7bskst36NAh8/HxsZEjRzrDXnnlFcuQIYPlyZPHGbZ//36TZKNGjXKGFS5c2Fq3bn1Fy1C4cGG76667LDg42P73v//ZqFGjrEKFCubj42O//vrrJes7duyYjR071iTZY4895kz3l19+MTOz1q1bW+bMma106dL2zDPP2NixY61x48YmycaMGeMxrWeffdYyZsxo7du3t3Hjxtlrr71m2bJls8qVK9uZM2cuWcPVzkeSvfHGG87zn376yfz9/a1IkSL27rvv2ttvv2358+e3cuXKXfD+kmTlypWzfPny2ZtvvmnDhg2zYsWKWdasWe3gwYNOu9jYWCtQoIAVLFjQBgwYYGPHjrVHH33UJNnQoUOdduPHjzdJ9sQTT9iHH35ow4cPt3bt2tnLL79sZma//PKLPfnkk87rUtbvsWPHLrkuatasafnz57eCBQvaK6+8YmPGjLHatWubJPvuu++cdhMnTjRJHtuo2f/tO5YsWXLRaXbv3t1GjhxpoaGh5uvra1988YWFhIRYv379bNiwYXb77bdbYGCgJSYmOq9PeY+XKVPGHnnkERs1apS1bNnSJNnTTz/tMf+33nrLfHx8rFmzZjZmzBjr37+/3XbbbVakSBE7cuSIR00hISGWJ08e69Spk3344Yc2a9asS66X6Ohoy5gxo9155502ePBgZ7o5c+Z01sGqVavsf//7n0myl19+2SZPnmwLFiy46PT+7T2Vsszh4eE2cuRI69ixo/n6+l6wPV9qObZv3+7sF0uUKGGDBg2ywYMH22233WYFChTwmMZ7771nNWrUsAEDBtj48ePtlVdesSxZsti9995rycnJTrsNGzZYlixZrFChQjZw4EB78803LTg42MqWLXvBtt66dWtn2xw9erS1atXKJFmjRo082l3P/R9wMyFgAbeIKwlYpUqVstOnTzvDhw8fbpJs48aNZmaWnJxsd9xxh0VERHh8EJ84ccKKFi1qDz744GVrWLt2rUmyiRMnegy/mummfBF55plnPKbx2GOPWe7cuS87/59//tkk2YwZMy7bLlu2bE7YSO3EiRMXDIuJiTFJ9umnnzrDZsyYccGXTjOzo0ePWlBQkLVv395jeGxsrAUGBjrDjxw5YpJsyJAhl63zYkqXLm1NmzZ1nleoUMGaNGlikuy3334zM7OvvvrKJDnBxswzYF1uGVLaSrLly5c7w/bv32/+/v7WtWvXy9Z34MCBC0JLipQvaQMGDPAYnhL8U6xYscIk2WeffebRbv78+Rcdfq3zMbswYD3yyCOWNWtW27t3rzNs27ZtljFjxosGLD8/P/vjjz+cYb/88otJ8gjB7dq1s3z58nmELjOz5s2bW2BgoLPdNWzY0EqXLn3ZZRsyZMhFg9Cl1KxZ84Lt9/Tp0xYSEmKNGzd2hl1twJJkU6dOdYZt2bLFJFmGDBnshx9+cIZHRUVdsE9IeY8/+uijHvN66aWXPLbbHTt2mK+vr7399tse7TZu3GgZM2b0GJ5S07hx465ovZQvX97y5s1rhw4dcob98ssvliFDBmvVqtUFy/9v+xSzS7+n9u/fb35+fla3bl1LSkpyho8aNcok2SeffPKvy5ESsHLnzm2HDx92hn/zzTcmyb799ltn2MX2Y59//vkF7+lGjRpZ5syZbefOnc6wzZs3m6+vr8e2vn79epNkzz77rMc0u3XrZpJs8eLFZpY2+z/gZsEpgkA60rZtW/n5+TnPa9SoIUn666+/JEnr16/Xtm3b9NRTT+nQoUM6ePCgDh48qOPHj6tOnTpavny5kpOTr3q+1zLdF154weN5jRo1dOjQISUmJl5yPoGBgZKkqKioKzqd8HxZsmRx/j579qwOHTqkEiVKKCgoSD/99NO/vj46Olrx8fF68sknnWU8ePCgfH19VaVKFS1ZssSZj5+fn5YuXXpVp7xJ/6yHFStWSJKOHj2qX375Rc8995xuu+02Z/iKFSsUFBSku++++6qmnVpoaKizfUhSnjx5dNdddznbyn9xsf/b1NOdMWOGAgMD9eCDD3qsx4oVKyp79uzOevyv8zlfUlKSFi5cqEaNGil//vzO8BIlSqh+/foXfU14eLiKFy/uPC9btqwCAgKc+ZiZvvzySz3yyCMyM4/liYiIUEJCgrNtBQUFac+ePRec8vVfZc+e3ePaTD8/P917773/6f8ye/bsat68ufP8rrvuUlBQkEqVKqUqVao4w1P+vti8OnTo4PG8U6dOkqTvvvtOkvTVV18pOTlZTZs29VhvISEhuuOOOy7YDvz9/dW2bdt/rf3vv//W+vXr1aZNG+XKlcsZXrZsWT344IPO/N2ycOFCnTlzRq+++qpHRzPt27dXQECA5s6d69H+csvRrFkz5cyZ03l+/j5c8tyPnTp1SgcPHlTVqlUlydnWkpKSFBUVpUaNGqlQoUJO+1KlSikiIsJjninro0uXLh7Du3btKklO/Wmx/wNuFnRyAaQjqT9IJTkf1Ckfctu2bZMktW7d+pLTSEhI8PiAvxLXMt3L1RoQEHDRaRQtWlRdunTRBx98oM8++0w1atTQo48+qpYtWzrh63JOnjypgQMHauLEidq7d6/MzKO+f5OynLVr177o+JS6/f39NWjQIHXt2lXBwcGqWrWqHn74YbVq1UohISGXnUeNGjU0btw4/fHHH/rzzz/l4+OjsLAwJ3i1b99eK1asULVq1Ty+zF2t89e/9M//wX/9QpQ5c2bnOq1LTXfbtm1KSEhQ3rx5LzqNlI4H/ut8LjbdkydPqkSJEheMu9gw6d/X04EDBxQfH6/x48dr/Pjxl5yvJL322mtauHCh7r33XpUoUUJ169bVU089pWrVql2y5itRoECBC64fy5kzp8e1fG5MMzAwUAULFrxgmKSLrvc77rjD43nx4sWVIUMG5zqcbdu2ycwuaJciU6ZMHs9vv/12jx+QLmXnzp2S/gmF5ytVqpSioqJ0/PhxZcuW7V+ndSUuNT8/Pz8VK1bMGZ/icsvxb/twSTp8+LD69++vL7744oL3Ssp+7MCBAzp58uRF1+1dd93lETJ37typDBkyXPAeCAkJUVBQkFN/Wuz/gJsFAQtIR3x9fS86PCVIpBxFGjJkyCW7Wb+WG8Vey3T/rdZLef/999WmTRt98803WrBggV5++WUNHDhQP/zwgwoUKHDZ13bq1EkTJ07Uq6++qrCwMAUGBsrHx0fNmze/oiN3KW0mT5580S8KqbsDf/XVV/XII49o1qxZioqK0uuvv66BAwdq8eLFuueeey45j+rVq0uSli9frr/++ksVKlRQtmzZVKNGDY0YMULHjh3Tzz//rLfffvtf672ca13/1zrd1JKTk5U3b1599tlnFx1/fnC61vm44UrfUy1btrzkDwxly5aV9M+X+61bt2rOnDmaP3++vvzyS40ZM0Z9+/Z1ur6/HjVKumQHHud3CvJv0/wv2835NSQnJ8vHx0fz5s276HTP32ekPnJzM7vcclzJ+m3atKlWrVql7t27q3z58sqePbuSk5NVr169azoDIcW/3Xw4LfZ/wM2CgAXAkXKqU0BAgMLDw6/69Zf6AP6v071aZcqUUZkyZdSnTx+tWrVK1apV07hx4/TWW29dts6ZM2eqdevWev/9951hp06duqCnr39bzrx5817RchYvXlxdu3ZV165dtW3bNpUvX17vv/++pkyZcsnXFCpUSIUKFdKKFSv0119/OacI3X///erSpYtmzJihpKQk3X///Zed9799WbpWbky3ePHiWrhwoapVq5amX5rz5s2rzJkzX7RnzYsNuxJ58uRRjhw5lJSUdEXbRLZs2dSsWTM1a9ZMZ86c0eOPP663335bvXr1UubMma/b/1vKkZDzt/Xzj664adu2bSpatKjz/I8//lBycrJzD6nixYvLzFS0aFHdeeedrs035UbBW7duvWDcli1bdNttt13T0atL/d+knl+xYsWc4WfOnNH27dtd3SceOXJEixYtUv/+/dW3b19neMrRpRR58uRRlixZLhieUuf59ScnJ2vbtm0qVaqUMzwuLk7x8fHO8qXF/g+4WXANFgBHxYoVVbx4cb333ns6duzYBeMPHDhw2denfCk5/0vaf53ulUpMTNS5c+c8hpUpU0YZMmTw6E44W7ZsF9Qo/fPr8Pm/tI8cOfKCX/EvtZwREREKCAjQO++8o7Nnz14w/ZTlPHHixAXdURcvXlw5cuS4aLfH56tRo4YWL16sNWvWOAGrfPnyypEjh959911lyZJFFStWvOw0LrUM/1XK/Xr+y3SbNm2qpKQkvfnmmxeMO3funOs1p/D19VV4eLhmzZqlffv2OcP/+OMPzZs375qn2bhxY3355Zf69ddfLxifets/vxttPz8/hYaGysyc7el6/b+lfDlevny5MywpKemSpzW6YfTo0R7PR44cKUnO9W6PP/64fH191b9//wvel2Z20W7Hr0S+fPlUvnx5TZo0yWM9/vrrr1qwYIEeeuiha5rupf5vwsPD5efnpxEjRngsx4QJE5SQkKAGDRpc0/wuJuUI1/nra9iwYRe0i4iI0KxZs7Rr1y5n+G+//aaoqCiPtinr4/xpfPDBB5Lk1J9W+z/gZsARLACODBky6OOPP1b9+vVVunRptW3bVrfffrv27t2rJUuWKCAgQN9+++0lX1+8eHEFBQVp3LhxypEjh7Jly6YqVaqoaNGi/2m6V2rx4sXq2LGjmjRpojvvvFPnzp3T5MmTnS+5KSpWrKiFCxfqgw8+UP78+VW0aFFVqVJFDz/8sCZPnqzAwECFhoYqJiZGCxcuVO7cuT3mU758efn6+mrQoEFKSEiQv7+/ateurbx582rs2LF6+umnVaFCBTVv3lx58uTRrl27NHfuXFWrVk2jRo3S77//rjp16qhp06YKDQ1VxowZ9fXXXysuLs6j44BLqVGjhj777DP5+Pg4pwz6+vrqvvvuU1RUlB544IF/vRblcsvwX2TJkkWhoaGaNm2a7rzzTuXKlUt33333VXW4UbNmTT3//PMaOHCg1q9fr7p16ypTpkzatm2bZsyYoeHDh+uJJ574T3VeSr9+/bRgwQJVq1ZNL774opKSkjRq1CjdfffdWr9+/TVN891339WSJUtUpUoVtW/fXqGhoTp8+LB++uknLVy4UIcPH5Yk1a1bVyEhIapWrZqCg4P122+/adSoUWrQoIFy5MghSU5w7t27t5o3b65MmTLpkUce+c/XC5UuXVpVq1ZVr169dPjwYeXKlUtffPHFBT9YuGn79u169NFHVa9ePcXExGjKlCl66qmnVK5cOUn/7E/eeust9erVSzt27FCjRo2UI0cObd++XV9//bWee+45devW7ZrmPWTIENWvX19hYWFq166dTp48qZEjRyowMPCC+6Jdqcu9p3r16qX+/furXr16evTRR7V161aNGTNGlStXvujN4a9VQECA7r//fg0ePFhnz57V7bffrgULFmj79u0XtO3fv7/mz5+vGjVq6KWXXtK5c+ec+7Clvj6vXLlyat26tcaPH6/4+HjVrFlTa9as0aRJk9SoUSPVqlXLmXda7P+Am0Jad1sI4Pq4km7az+9qOKXr3/O7Vf/555/t8ccft9y5c5u/v78VLlzYmjZtaosWLfrXOr755hsLDQ11urVOPe0rmW5KF84HDhzwmO6lupFO7a+//rJnnnnGihcvbpkzZ7ZcuXJZrVq1bOHChR7ttmzZYvfff79lyZLFJDndlx85csTatm1rt912m2XPnt0iIiJsy5YtF3Rxbmb20UcfWbFixZwujVN3zbxkyRKLiIiwwMBAy5w5sxUvXtzatGljP/74o5mZHTx40Dp06GAlS5a0bNmyWWBgoFWpUsWmT5/+r+vXzGzTpk1Ot/upvfXWWybJXn/99QteczXLULhwYWvQoMEF06hZs6bVrFnzX+tb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rlGjRjnt7rjjDj300EN8J/r/fHx89PXXX6tevXp69NFH1bx5c/34449asmSJsmXLprJlyzqnC95K0u+eF5eVsqGPGTNGs2bN0nvvvaeTJ0/q5Zdf1ttvvy1JWr9+vRYtWqTIyEiVLVvWm+V63cW+9BcuXFh//vmnvv/+ezVo0EDffPONmjRposyZM3uhwhtP6hC/Y8cO55etIkWK6K+//lKBAgUkSX/99ZceeughffXVV8qWLdsttRM2M+3Zs0elSpXSjBkzJEmlS5fWsGHD9O233+q7777TtGnT1K5dO+3bt0+NGjXSuXPnbsmQea2ioqJ07Ngxvf322zpw4IBmzZqlefPmqUmTJipUqJAyZ858S37RWbp0qdavX69u3bopY8aMWr58uebNm6fs2bOrRo0aevDBB3X27Flvl+lVQUFB6tKli7Zu3apPP/1Ud955p4oVK6Zz586pffv2+vzzz1WtWjVlyJDhltqvuKFgwYL67bff9P333zsdggQEBKh58+Z64403VLJkSS9XmPaSk5OVNWtWbdq0SV9++aV69uwpSXr77beVlJSkHj16SJK++OILbdiwQUFBQV6s9sbx559/6rPPPtP48eO1ZMkS5cmTR6NHj9axY8e0ZMkSZc2aVatXr/Z2me4zIJXk5GTn723btlnLli3t6NGj9t5779mjjz5qc+bMscDAQBs0aJCZmR07dsxbpd4wUq+zyZMnW58+feyLL76wI0eOeIyfOXOmVahQwTZt2uSNMm9YgwYNsjJlyljx4sXt9ddfNzOzVatWWalSpezhhx+2O++803799VcvV3l9JCUlmZlZZGSkFSpUyL799ltn3MCBA61Pnz7O+Pfee892797tlTpvJNu2bbP9+/ebmVlsbKyVK1fOeb5161Z76KGH7IcffrDp06db3bp1be/evd4s1zUp24qZ2dGjR+3ll1+2Dz74wMzM9u3bZ7fffruNGzfOZsyYYWFhYXbgwAFvlep1qffJJ06csN69e9vjjz/u8f4yM/v888+tUqVKtnHjxrQu8YY1ceJEW7BggZmZrVy50ooWLWpDhgyx06dPO21Sr9/0aMmSJdapUyfz8fGxnj17mpnZ0qVLrUqVKlanTh2rXLky29T/t379esuSJYt17NjRGRYfH28VKlSw/v37e7Gy64+AhYtKCQf79u2zNWvWWHh4uJmZnTp1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G1dUVJRVqlTJzP45CvHdd9/Z+PHjbfPmzTZx4kTr2rUrvQXaxb/8TJ061QoXLmzTp0/3OHWyRYsWt+x2lno9/PnnnxYZGWmZM2d2Tr8ZP368hYSE2GOPPWaFCxe+JTtn+C8WLFhg5cqVs8TERDt79qzNnTvX3nzzTUtOTrZZs2bZSy+95ITzm13qbWXPnj3OL7/nzp2zli1bWteuXa1mzZrWsGFDj7MM0qPU6+rgwYPOaWyRkZH2/PPP27Rp08zMbPbs2VajRo1bKoT/V8OGDbOGDRtaiRIlbOjQoXb8+HHbuHGjhYSEWKNGjez222+3zZs3e7tMrxo9erTVrl3bfv31V6tbt64VLVrU6UHZzOy3335L10dDz507Z08++aRHRzHt27e3LFmyeHRONXHiROvbt6/H5316+AExo7e7iUfai4uLU0hIiCRp+PDhWr9+vTZv3qx+/fopPDxcPj4+OnnypMqWLasHH3xQ7du393LF3mep7tkkSf7+/goODta7776rAwcOaP/+/Zo/f7769OmjV155xYuV3jhSr7OlS5dq3759Kl26tJ588kn5+fmpW7duMjM1atRIfn5+mjJlipcrvj5Sr4fRo0dr+vTpWrRokY4fP66mTZtq5syZat++verVq6cjR44oT548ypcvn5ervrEEBATo/vvv19tvv61z585p9+7d+vPPP3XgwAENHz5ctWvXVo4cObxdpitStpVhw4bpq6++0p49e/TAAw+oU6dOmjx5shYuXKjjx49r2rRpSk5O9nK13pP6fTVixAh9+umnKlOmjOrUqaMWLVpoz549GjNmjMaPH+/cjDlv3rxervrGEBkZqc8//1wzZ87U999/r2+++UaJiYnq27ev1qxZo4MHDypPnjzOvQjTi9Tb1L59+zRv3jx99dVXmjhxoiRpyJAh6tmzp44fP67+/funy3uBpebr66vIyEjt3LlTjRo10qxZszR+/HidO3dO1apV09tvv63bb79dffv21YcffqhMmTIpKSlJvr6+6WPb8ma6Q9qbP3++1a9f386dO2dDhw61OnXq2JEjR6x8+fLWpk0b5xfBl156yelp6VY8XetqnH9PlbNnz9qxY8esb9++Vr9+fVu+fLmZ/dMVe9euXe3s2bPpfp2lNmLECCtXrpw1adLEqlWrZr169bKzZ8/a1KlTLTAw0L766itvl5gmVqxYYS1atPA40jJ69GjLmzevc7ogLr6/2b17t/Xu3duaNWtmq1evNrN/joSm7h75Zpf6aNS0adOsUqVKdvDgQduxY4d17NjRnnvuOefaPTNL9z26pZg1a5Y9/PDDNn/+fBs3bpzVrl3bPvnkEzP756jWmjVrPK7vhFmPHj0sMjLSeb548WLLmzev0/FAepR6vzN27FiLjY21w4cP28qVK61OnTpm9s/952rVqmUPPPDALXPE/Fqdf6S9WLFi1qRJE2fYiy++aD4+PtatWzfnCFd6+15EwEpH5s+fb/fee68tWbLEzP55AyQnJ9t7771n9evXt7Nnz9rJkyft6NGjNmHCBPv999+9W/ANIPUO4f3337cmTZrYY4895nxgpxzynjRpkpUtW5bTAs+zdu1aq1SpkvNlcP78+da6dWuno4LJkyffsve5SpGUlGS7du2ycuXKWcmSJW3NmjUe499//30rUqSIHTt2LN19AJ0v9fJ//PHH9vLLL9v7779/QTf1U6dOtQoVKtwy9zA6dOiQ3XXXXU5vWx999JHH7Qvi4uKsWLFiNmnSJGdYet1WUk6ZNDNbvny5VaxY0Vlvhw4dshkzZlh4eLi9++673irxhpJ6O0m5P1O7du2sXbt2Hu2efvppi4mJSdPabkQpPeClXHs2d+5cq1Klipn903vp008/ne5/3EjZpubOnetcO7xnzx4rX768PfbYY067l156yYKDg51Tc9PbPouAlU7Mnz/ffHx8bOjQoWb2z472kUcesbp169qjjz7qBIVBgwZZ9+7dvVjpjWnJkiVWpUoVi4qKsmeeecZuu+0254Lpb775xipVqnTLfNlz02+//WZNmjSxo0ePOtf69erVy5o2berlyq6vi32QrFq1yu6//3579913L7jYPj3fu+hiRo0aZffff7/NmDHjgq5+Z8yYYdWrV7/l3m/R0dFWpkwZW758uQ0ePNjuuecej/E9e/ZM9133b9u2zfr06eN0sT5//nyrUKGCPfzww04vb/Hx8TZlyhRr2LChHTp0KN19qUvt/M4aUq4f2rZtm+XIkcN69uxpBw4csE8//dRKlSqVLq6LuZwFCxZYw4YNnR8ykpKSbOfOnVa/fn0LCwuz0NBQblPz/82ePdvuvvtuj16U9+zZY1WqVLG6des6w5o3b2533nlnurxVDQErHZg3b55VrlzZnn32WcuXL5/zRWXkyJFWpkwZ5x4qEydO5CjMRUycONHq1q1rP/30kzPsxRdftHz58tm+ffvs3LlznIJiFw8VW7ZssRIlSnh8MYyMjLROnTo53bTealKvh9mzZ9t7771nX375pR0+fNjWrVtnNWrUsMGDB6fL3rkuJfU6W7VqlVWpUsVOnjxpw4cPt5o1a1qPHj2sfv36FhMTYydOnLhl32+LFy+2ChUq2KpVq6xatWp233332dq1a23MmDEWGhp6yx/tvZzTp0/b0aNH7fDhw7ZmzRqnA4sVK1bYk08+aZ06dXJOoUxISLDExERvlntDGTZsmN177722Y8cOZ9i2bdvsnnvusSeeeMKqVauWLj/3U/Y7Kf9OmjTJ7r33XmvWrJmzf05KSrI9e/ZYVFSUx/pLz7Zu3Wrly5e3vXv3WlJSkq1evdqGDRtm+/bts127dlnp0qU9ztTYt2+fF6v1HgLWLe7QoUNWqFAhW7ZsmZmZDRkyxHLlymUrV660Y8eOWZ8+faxIkSLWtGlTu+eee9LlTvbffPHFFxfcI8TMrGXLlnbHHXd49MKYXh0/ftz5e8qUKda9e3fnVNTZs2dbrly57JVXXrEuXbpYmTJlbrmjDxczYsQIq1Chgr3yyiv2yCOPWLNmzWznzp0WExNjZcuWteHDh7PtnGf+/Pl29uxZ27t3r82cOdO59mHBggVWrFgxa9q0qcd1SLeiRYsWWaVKlWzZsmXOTU0feuihdL1vXr9+vb3++uvOqaI9e/a0Jk2a2DfffGNm/wTTli1bWtu2bZ0jWfjHX3/9ZdWrV7e///7bDh06ZBMmTLB27drZ9OnTLSkpyY4fP54uj6Cn/lEndQBYvHixPf744/bee++l+yN6l7J161a79957bcyYMdalSxdr1aqVFStWzLkmNuU9mB7udXU59CJ4i8uVK5c2bNigwMBAJScnq1u3bvLx8dGjjz6qefPm6c0331Tz5s3l6+urnDlzKjg42Nsle5Wd11ugJDVr1kzJycl67rnnVKhQIT399NOSpMmTJys2Nla+vr7eKPWG8eOPP2rmzJl65ZVXNHfuXI0YMULVq1dX9+7d1bp1a3Xs2FFz585VTEyMjh49qpkzZ+rOO+/0dtmuO378uLJlyyZJ2rJli7744gtFRUXptttu0+bNmzVp0iR9+umn6tOnjz744AOVKFEi3W87qd9vn332mQYNGqSFCxcqf/782r59u0JDQyVJCQkJqlu3rgYMGKDMmTN7s+Trrnbt2ho0aJB69uypwYMHq3r16jp16tQtv9yXc/DgQf3888/KlCmT2rdvr27dumncuHGaNm2azEwNGzbUmTNnNHPmTMXHx6frz7HU76mTJ08qW7ZsMjO9+eabio+PV65cuZQvXz4tWLBAjRo1UtasWZU1a1YvV532UtbRmDFjNGvWLPn7+6tYsWIaMGCAnn/+eU2YMEEnTpzQs88+m+57dU3ZppYuXapz584pLCxMTZo00ZQpU/Taa6/p0Ucf1eLFizVmzBgdP37c2Z4yZvwnYpz/nSq9IGClA4GBgTIzZciQQZLUtWtXmZkeeeQRTZ48WQ8++KCXK7xxpOwIPvnkE+3atUv+/v5q1aqVnnzySZmZOnfurFOnTjld16d0d5+e+fn5admyZUpOTtbRo0cVHR2t4OBgTZ06VV988YUyZMigp556SlWrVvV2qdfNpk2b9NVXX6lJkyYqWbKkcuXKpcDAQO3du1e5cuVSaGioSpUqpS+//FKSVKdOHS9XfGNIeb999913WrRokSZOnOh0pV2sWDF9++23atKkiX777TdNnz5defLk8Wa5aaZ27dp644031L17dy1atChdfgGWpHXr1mn//v2qX7++MmTIoLFjx2rs2LF64YUX9NJLL2nUqFH66quvdPr0aTVt2lQ1atRIt+tK8gxXn3zyifbv36+ePXuqXbt2io2NVYcOHRQaGqopU6bohx9+0Llz55QpUyYvV532UtbT559/rgkTJmj69Olav369Vq5cqWeffVaff/659u/fr8WLF8vf39/b5XpVyrr67rvv9Morr2jChAnKli2bunXrpm7dukmSlixZoi5duujtt992fmSE6KY9PXvzzTetWLFiduLEiXR7CDfFjz/+aAcOHDCzf65Nq1mzpn3++edWrlw5Cw8Ptz/++MPM/umKvUiRIpaQkJDu15nZ/x3637Bhg4WHh1uZMmWcm+ea/dPbW82aNe2jjz66ZbuvX7lypbVv394ee+wxGzBggG3dutWOHj1q9evXt2HDhjk3opw+fbo1b97c43TK9CplO0hKSjIzs7Zt21r+/Plt2LBhzukl+/fvt6ioKBs4cKBt2bLFa7V6U3reVhISEqxXr15Wo0YNi4qKMrN/Tp9s0qSJ9e3b1/bt22eHDx+2nj17Wvv27Z2OL9KzlPfVyJEjrUqVKhd930yYMMEqVqyYLm9mvnXrVtuzZ4/zvEuXLjZ8+HAz++d0tl9//dUiIiKc661Tel1Mj06fPu38vWXLFitZsqRz4+m1a9fajBkzbO3atfb777/bPffcY7Nnz/ZWqTcsAlY6R3ejybZ9+3a75557bPv27RYdHW116tSxpKQkGzx4sEVERFj79u0tPDzc/vzzTzP754M/vUsdlFL+3rhxoz344IPWu3dvjy7+p0+ffsueyz5v3jyrUKGCbd261VatWmXNmze3fv36OR1aVKxY0Zo0aWJt27a1MmXK2IYNG7xd8g3l2LFjzt+9evWyRo0a2fLlyz0+3JH+HDp0yO655x6LiYmxvn37Wr169WzevHlm9n8hq3///rZnzx47cuSI8+NYevXXX385f//0009Wrlw5+/vvv+348eP22WefWfPmzS0mJsZ27txpderUSRfXwJ5v//791rZtW3vllVecz6PBgwfbs88+63Qjbmb26KOP2ty5c71V5g1h9+7d9uabbzo/WqxevdrCw8Nt4cKF1qVLF6tXr57Vrl3b3njjDUtMTHR+gL4Vf0D9L3zMzLx9FA3wpsTERD300EOaN2+eTpw4oWPHjunHH3/Uhx9+qAULFuibb75Rp06dVL58eX3zzTfKmDFjuj2nWPI8DSUqKkonTpxQ6dKldeedd2rDhg3q0qWLqlSpoqeffvqWvtP9/Pnz1adPHw0ePFi1a9eWmWn8+PFaunSp7rjjDnXv3l2HDx/WunXrdPDgQYWHh6tYsWLeLturDh48qICAAPn5+WncuHFauHCh8uTJo3r16qlhw4bq2rWrdu3apRdeeEE1a9Z0zuFH+rNgwQL17dtXI0eO1DfffKN169bplVdeUb169bRkyRINGjRIDzzwgLp3756ur2Xcu3evRo0ape7duytXrlyKjY1V7969derUKQUEBMjM5Ovrqz///FPz589XYmKiAgICvF22V8ycOVMLFy5UUFCQunbtqp07d6pPnz5q0KCBqlSpori4OL3xxhv65ptvVLBgQW+X6zXx8fHavXu3cubMqYSEBJUuXVqPPvqozp49q3bt2umJJ57QpEmTtGTJEn3yySfO5Sc4j1fjHeBFhw8fNjOznTt3WlhYmMcpJn369HF6DZw4caL169cv3XY1eikjR460ypUrW8+ePS0gIMA5RWDjxo1WqVIl69+//y1774v4+HjLli2bDRkyxMzMtm/fbjVq1LCNGzdadHS0NW3a1Pr37+8c9cQ/p+fUr1/foqOj7dNPP7Vy5crZvHnzrEuXLvbkk0/auHHjzOyf3jlbtWplJ06c8HLF8LZFixZZxYoVbc2aNda7d2+rV6+ec7rgsmXLPE73So9WrFhho0aNssTERFu/fr3zmTVp0iTr3r27c0rXrFmzrFmzZrfsrTEuJzk52ePIyqxZs6x169bWs2dPO3nypM2fP9/atm1rderUsbp166b7+1yl9GybnJxsjz32mDVp0sTpnj7llO61a9daxYoVnVv84OIIWEiXDh06ZHfddZdFRUXZzz//bFWqVPG43mHq1Kl211132UsvvWRFihRxPqjSs9SnbU2fPt3uv/9+O3bsmH3wwQd2xx132G233WYzZswwM7PNmzfbzp07vVVqmli8eLFVrlzZpk2bZjVq1LAPPvjAGTd//nyrX7++vfvuu3b69GlOnfj/Xn75ZXvkkUesXbt2zv34EhISLDIy0h577DHnw50fM5Aidcjq27evhYWF2cKFC71dltft37/fsmbNauXLl7cRI0bYhx9+aA0bNrSxY8d6tPv000+tUqVK6fL05NT73T179jj7l6VLl1rLli2tV69ezin/8fHx6bK7+tRS1tdvv/1mR48etQMHDjinuP/yyy+WlJRky5Yts2LFijk/qPLZdmkc10O6lCtXLo0aNUq9e/fWr7/+quDgYI0bN05z5sxRVFSUDh8+rAoVKuj48eNauHChSpUq5e2SvWrNmjUaOnSo9uzZI0nKkSOHvvjiC02aNElz5szR77//riZNmqh58+b67rvvVKpUKRUqVMjLVV9ftWrV0pAhQ/Tcc8/pnnvuUefOnZ1xERER6tq1q1q2bCk/P790f0ppcnKyJGn48OEqW7asoqOjtXTpUh09elQBAQFq3Lix9u3bpy1btkhSuu8WGf+ndu3aGjx4sDp16qR69eqpQYMGuuOOO7xdltdlz55dTZo00R133KEDBw7o77//1hNPPKGlS5dqyJAhkqTvv/9e06dP18SJE1WmTBkvV5z2Uva748aNU8uWLdW4cWO1atVKYWFhev755/X333+rd+/e2rt3rwIDAxUUFOTdgr3I/v+p/3PnzlXTpk3122+/6bbbbtPo0aN19OhRjRo1Sps2bVL16tX1zTff6JFHHrnobW3wfzjBHelWeHi4MmbMqIcfflh58uRRcnKyVq5cKR8fHx07dkw5c+ZUjx49VLx4cW+X6nUJCQmaMWOGMmTIoGeeeUb16tXTuXPntG7dOg0ePFiSVKZMGTVu3DhdhdGaNWtqzpw5eumll7RixQpVr17d+cChK/b/+9D28fHR33//rXz58umtt95SYGCglixZogULFig8PFzff/+9zpw5k266YcfVqV27tvr166fevXvru+++S9f3BEuRJUsW1apVSwMHDlTp0qUVFxenjBkz6qGHHtKCBQs0aNAgvfbaa7r77rvTXXA4fPiwcuXKJUn64osv9OGHH2rKlCk6ePCgJkyYoIcffljz5s3TwYMHtXjx4nTZVf35fHx8tGTJEvXo0UOffvqpKlasqL179ypDhgyaPHmymjVrpiFDhmjcuHG6++67ndfg0ujkAuneDz/8oJYtWyoyMlLVq1d3hp87dy7dX2SfnJzsXMC6YsUK9e7dWw8//LBatmypvHnzqlq1aqpcubJKliypyZMn6+uvv1b+/Pm9XHXaW7p0qV555RW9//77Cg8P93Y5N4TUv26OHj1aCxYs0O23367ixYura9eu6tWrl7799lvlz59fWbNmVf/+/VWuXDkvV40bWeqbeadH0dHRSkhIUM2aNZ0fI9544w3dd999+v3337V+/XrdcccdypUrl2JiYvTBBx8oZ86cXq46bUVHR2vChAl66qmnVKtWLb3zzjsqVKiQXnzxRSUlJenw4cNq0aKF3njjDVWrVk1Hjx5Vjhw5vF32DWHMmDHKmDGjKleurOXLl+vzzz+Xn5+fXn/9dVWoUEE7d+5UhQoVvF3mTYNTBJHuVa1aVR999JE6deqkqKgopfzmkJ57pjpfdHS0KleurNdff11z587V5MmT5ePjo08//VT79u3T8uXL9eGHH6bLcCVJDzzwgN577z29/vrrOnnypLfL8brU4eqjjz7SV199pbFjx+qXX37Rpk2bJEkDBw5Uw4YN5e/vr48++ohwhX+VnsNVQkKCIiIi1LZtW73zzjt6+eWXdezYMcXHx+unn35Sp06dVKFCBf3yyy86evSohg0blu7C1Xfffadu3bqpbdu2KlOmjHLkyKGQkBBFR0drz5498vX1VZ48eRQQEKCEhARJStfhKuW7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",
      "text/plain": [
       "<Figure size 1000x700 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(10,7))\n",
    "plt.bar(df.NAME, df.Point_Count)\n",
    "plt.xlabel('NAME', fontsize=7)\n",
    "plt.ylabel('point_count', fontsize=7)\n",
    "plt.xticks(fontsize=8, rotation=45)\n",
    "plt.title('The ten states with the highest number of tornadoes')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Number of tornadoes by state, 1950–2011\n",
    "\n",
    "Some states are subject to many more tornadoes than others. Over a 62-year period (1950–2011), Texas had by far the most tornadoes (with 7,935), followed by Kansas (with 3,713), while others such as Vermont, Rhode Island, and the District of Columbia had fewer than 50. The ten states shown in the graph below had 20 percent of the total number of tornadoes."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Conclusion\n",
    "\n",
    "In this notebook, we demonstrate how to use aggregation analysis to summarize the number of data points within each polygon. Thus, using `aggregate_points()` method, we arrive at the number of tornadoes that hit each state. and published the aggregation results as an online service. Mapping results often show new insights that lead to deeper understanding and more clearly defined analysis."
   ]
  }
 ],
 "metadata": {
  "esriNotebookRuntime": {
   "notebookRuntimeName": "ArcGIS Notebook Python 3 Standard",
   "notebookRuntimeVersion": "9.0"
  },
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.0"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": false,
   "sideBar": true,
   "skip_h1_title": true,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": true,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
